﻿using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using Adalbertus.BudgetPlanner.Domain.Repositories;

namespace Adalbertus.BudgetPlanner.Domain.CodeContracts
{
    [ContractClassFor(typeof(IBudgetRepository))]
    public abstract class IBudgetRepositoryContract : IBudgetRepository
    {
        public Budget GetBudgetByDate(DateTime budgetDate)
        {
            throw new NotImplementedException();
        }

        public Budget GetDraftedBudget()
        {
            throw new NotImplementedException();
        }

        public void Save(Budget domain)
        {
            Contract.Requires<ArgumentNullException>(domain != null);
            throw new NotImplementedException();
        }

        public void Save(IEnumerable<Budget> domains)
        {
            Contract.Requires<ArgumentNullException>(domains != null);
            throw new NotImplementedException();
        }

        public void Update(Budget domain)
        {
            Contract.Requires<ArgumentNullException>(domain != null);
            throw new NotImplementedException();
        }

        public void Remove(Budget domain)
        {
            Contract.Requires<ArgumentNullException>(domain != null);
            throw new NotImplementedException();
        }

        public Budget GetById(int id)
        {
            throw new NotImplementedException();
        }

        public IEnumerable<Budget> GetAll()
        {
            Contract.Ensures(Contract.Result<IEnumerable<Budget>>() != null);
            throw new NotImplementedException();
        }
    }
}
